1f003df61ee06c3623ab741c2a86b20ede9fee6a,algorithm/src/org/dzhou/practice/hard/premium/AlienDictionary.java,TopologicalSort,dfs,#char#,158

Before Change


			private void dfs(char c) {
				visited.add(c);
				for (char child : graph.get(c)) {
					if (visited.contains(child))
						continue;
					dfs(child);
				}

After Change


				visited.put(c, State.VISITING);
				if (graph.containsKey(c)) {
					for (char child : graph.get(c)) {
						if (!visited.containsKey(child))
							dfs(child);
						else if (visited.get(child) == State.VISITED) {

							System.out.println(child + " VISITED");
							continue;
						} else if (visited.get(child) == State.VISITING) {
							System.out.println(child + " VISITING");
							hasCircle = true;
							return;
						}
					}
				}
				visited.put(c, State.VISITED);